package pua.uniandes.interfaz;

import java.awt.BorderLayout;
import java.util.ArrayList;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import pua.uniandes.monitoreo.Monitoreo;

public class InterfazCentroMonitoreo extends JFrame{
	
	private PanelListaTramas panelListaTramas;
	private PanelBotones panelBotones;
	private PanelGrafica panelGrafica;
        private Monitoreo mundo;
	private DialogoCrearMision dcm;
        private DialogoInicializarMision dim;


	public InterfazCentroMonitoreo(){
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setTitle("Centro de Monitoreo");
		setSize(700, 600);
		setResizable(false);
		setLayout(new BorderLayout());
		
		panelListaTramas= new PanelListaTramas(this);
		panelBotones=new PanelBotones(this);
		add(panelListaTramas, BorderLayout.CENTER);
		add(panelBotones, BorderLayout.SOUTH);
		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//USER INTERFACE
		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void iniciarMision(String nombre, String tiempo, String numTramas)
	{
                boolean a=mundo.iniciarMision(nombre);
                int n=Integer.parseInt(numTramas);
                mundo.setNumTramas(n);
                dim.dispose();
                if(a){
                    JOptionPane.showMessageDialog(this, "La aplicación se va  a quedar escuchando hasta que se abra la comunicación con el componente de recepción.");
                    int time=Integer.parseInt(tiempo);
                    panelGrafica=new PanelGrafica(nombre,time);
                    panelGrafica.setVisible(true);
                    mundo.establecerConexion();
                    
                }
                else JOptionPane.showMessageDialog(this, "No existe una misión llamada "+nombre);
	}

        public void crearMision(String nombre, String cohete){
            boolean a=mundo.crearMision(nombre,cohete);
            dcm.dispose();
            if(a){
                JOptionPane.showMessageDialog(this, "La misión se creó exitosamente");
            }
            else JOptionPane.showMessageDialog(this, "Existió un error creando la misión. Porfavor revisar el Logger.");
        }
	
	public void actualizar(String trama){
		panelListaTramas.actualizarLista(trama);
		repaint();
		panelListaTramas.updateUI();
	}
	
	public void dialogIniciarMision(){
		dim=new DialogoInicializarMision(this);
		dim.setVisible(true);
	}

        public void dialogCrearMision(){
            dcm=new DialogoCrearMision(this);
            dcm.setVisible(true);
        }
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		InterfazCentroMonitoreo inter=new InterfazCentroMonitoreo();
		Monitoreo mundo=new Monitoreo(inter);
                inter.asignarMundo(mundo);
                inter.setVisible(true);
	}

    public void pintarGrafica(ArrayList<double[]> tramasGuardadas) {
        panelGrafica.pintarGrafica(tramasGuardadas);
    }

    public void asignarMundo(Monitoreo mon){
        mundo=mon;
    }
}
